import request from "@/utils/request";
import { downloadFile, getFilenameFromResponse } from "@/utils/download";

/**
 * 获取客户列表Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getCustomerListExcel() {
  return request({
    url: "/excel/customers/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "客户列表.xlsx") : "客户列表.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取销售机会Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getSaleChanceListExcel() {
  return request({
    url: "/excel/sales-opportunities/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "销售机会列表.xlsx") : "销售机会列表.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取订单列表Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getOrderListExcel() {
  return request({
    url: "/excel/orders/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "订单列表.xlsx") : "订单列表.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取服务记录Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getServiceRecordListExcel() {
  return request({
    url: "/excel/records/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "服务记录列表.xlsx") : "服务记录列表.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取投诉回复Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getComplaintReplyListExcel() {
  return request({
    url: "/excel/complaint-replies/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "投诉回复.xlsx") : "投诉回复.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取商品列表Execel
 * @returns {Promise<void>} 触发文件下载
 */
export function getProductListExcel() {
  return request({
    url: "/excel/products/export",
    method: "get",
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "商品列表.xlsx") : "商品列表.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}

/**
 * 获取采购清单Excel
 * @param {Object} params - 查询参数
 * @returns {Promise<void>} 触发文件下载
 */
export function getPurchaseListExcel(params) {
  return request({
    url: "/excel/purchase-lists/export",
    method: "get",
    params,
    responseType: "blob", // 指定响应类型为blob
  }).then((response) => {
    // 如果是通过拦截器处理过的数据，需要检查response.data是否为Blob
    const data = response instanceof Blob ? response : response.data;

    // 从响应头获取文件名，如果没有则使用默认名
    const filename = response.headers ? getFilenameFromResponse(response, "采购清单.xlsx") : "采购清单.xlsx";

    // 下载文件
    downloadFile(data, filename);
  });
}
